package com.eastfair.auth.service;

import com.eastfair.auth.entity.Organization;
import com.eastfair.auth.entity.OrganizationRole;
import com.eastfair.auth.entity.Role;
import com.eastfair.auth.vo.RoleVo;
import com.eastfair.boot.service.SuperCacheService;
import com.eastfair.boot.service.SuperService;
import com.eastfair.auth.entity.UserRole;
import com.eastfair.core.base.R;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 业务接口
 * 用户角色表
 * </p>
 *
 * @author ligang
 * @date 2022-06-06
 */
public interface UserRoleService extends SuperCacheService<UserRole> {
    /**
     * 添加用户关联角色
     *
     * @param userIdList 用户集合
     * @param roleIds    角色id集合
     * @return
     */
    R addUserRole(List<Long> userIdList, List<Long> roleIds);

    /**
     * 更新用户关联角色
     *
     * @param userIdList 用户集合
     * @param roleIds    角色id集合
     * @return
     */
    R updUserRole(List<Long> userIdList, List<Long> roleIds);


    /**
     * 剔除用户关联角色
     *
     * @param userIdList 用户集合
     * @param roleIds    角色id集合
     * @return
     */
    R removeUserRole(List<Long> userIdList, List<Long> roleIds);

    /**
     * 剔除关联的角色
     *
     * @param roleIds 角色id集合
     * @return
     */
    R removeOfRole(List<Long> roleIds);


    /**
     * 查询角色下的信息
     *
     * @param roleIds 角色id集合
     * @return
     */
    List<UserRole> findOfRole(List<Long> roleIds);

    /**
     * 查询用户下的角色
     *
     * @param userIds 用户id集合
     * @return
     */
    List<UserRole> findOfUser(List<Long> userIds);


    /**
     * 条件查询
     *
     * @param userRole 用户角色实体
     * @param userIds  用户id集合
     * @param roleIds  角色id集合
     * @return
     */
    List<UserRole> list(UserRole userRole, List<Long> userIds, List<Long> roleIds);

    Map<Long, List<UserRole>> findMapOfUser(List<Long> userIds);


    Map<Long, List<RoleVo>> findRoleMapOfUser(List<Long> userIds);


}
